package Factory.ui;

import Factory.bll.Operation;
import Factory.factory.AddFactory;
import Factory.factory.OperationFactory;
import Factory.factory.SubFactory;

import java.util.Scanner;

//界面逻辑
public class Test {
	public static void main(String[] args) {
		double numberA,numberB,result;
		String option;

		//		界面逻辑
		Scanner input =new Scanner(System.in);
		System.out.println("请输入A的值");
		numberA=input.nextDouble();
		System.out.println("请输入B的值");
		numberB=input.nextDouble();
//		获取回车
		input.nextLine();
		System.out.println("请输入运算符");
		option=input.nextLine();

//		调用业务逻辑的方法
//		包含多态
//		生产对象的部分提取出来，因为违反了迪米特法则：
//		需要使用到业务逻辑的对象，但是界面逻辑不方便直接生产对象，所以引入第三方来处理（工厂）
//		新增功能时可以更改界面逻辑的代码（判断使用哪一个工厂），但是不能更改业务逻辑的源代码
		Operation operation= null;
		OperationFactory factory=null;
		switch (option){
			case "+":{
				factory=new AddFactory();
				break;
			}
			case "-":{
				factory=new SubFactory();
				break;
			}
			default:throw new RuntimeException("运算符号输入错误");
		}

		operation=factory.CreateOperation();
		operation.setValues(numberA,numberB);

		result=operation.getresult();
		System.out.println("result的值为"+result);
	}
}
